import router from "./router";
import store from "./store";
import NProgress from "nprogress";
import "nprogress/nprogress.css";
import { getToken } from "@/utils/auth";

NProgress.configure({ showSpinner: false });

const whiteList = ["/login"];

router.beforeEach((to, from, next) => {
  NProgress.start();

  if (getToken()) {
    if (to.path === "/login") {
      next({ path: "/" });
    } else {
      if (store.state.userInfo) {
        next();
      } else {
        store
          .dispatch("GetUserInfo")
          .then(() => {
            next();
          })
          .catch(() => {
            store.dispatch("LogOut").then(() => {
              next({ path: "/login" });
              store.commit("SET_REDIRECT_PATH", to);
              NProgress.done();
            });
          });
      }
    }
  } else {
    // 没有token
    if (whiteList.indexOf(to.path) !== -1) {
      // 在免登录白名单，直接进入
      next();
    } else {
      next(`/login`); // 否则全部重定向到登录页
      store.commit("SET_REDIRECT_PATH", to);
      NProgress.done();
    }
  }
});

router.afterEach(() => {
  NProgress.done();
});
